home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 57131 / 57131.xpi / chrome / beefree.jar / content / beefree / beefree.referer.js < prev    next >
Encoding:
JavaScript  |  2010-01-25  |  6.0 KB  |  136 lines

  1. /*
  2.     2009 - Copyright by Bee <http://www.honeybeenet.altervista.org>.
  3.     This program is free software; you can redistribute it and/or
  4.     modify it under the terms of the GNU General Public License
  5.     as published by the Free Software Foundation; either version 2
  6.     of the License, or (at your option) any later version.
  7.  
  8.     This program is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.     GNU General Public License for more details.
  12.  
  13.     You should have received a copy of the GNU General Public License
  14.     along with this program; if not, write to the Free Software
  15.     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  16. */
  17.  
  18. //I took something from:
  19. //https://developer.mozilla.org/en/Creating_Sandboxed_HTTP_Connections#HTTP_notifications
  20.  
  21. function beefree_useragent_new()
  22. {
  23.     var beefree_X = beefree_random_string(beefree_random_number(5) + 2);
  24.     var beefree_U = beefree_random_string(1);
  25.     var beefree_OS = beefree_random_string(beefree_random_number(8) + 4);
  26.     var beefree_LANG = beefree_random_string(2)+"-"+beefree_random_string(2);
  27.     var beefree_RV = beefree_random_string(beefree_random_number(12) + 2);
  28.     var beefree_FAKE_1 = beefree_random_string(beefree_random_number(6) + 5) + "/2010" + beefree_random_number(10000);
  29.     var beefree_FAKE_2 = beefree_random_string(beefree_random_number(6) + 5) + "/" + beefree_random_number(10) + "." + beefree_random_number(10) + "." + beefree_random_number(10);
  30.     var xtra = beefree_X + "; " + beefree_U + "; " + beefree_OS + "; " + beefree_LANG + "; " + beefree_RV;
  31.     var useragent = "Mozilla/5.0 (" + xtra + ") " + beefree_FAKE_1 + " " + beefree_FAKE_2;
  32.     return useragent;
  33. }
  34.  
  35. var beefree_useragents_list = new Object();
  36.  
  37. var beefree_opt_referer_remove = beefree_pref_do_get_bool("opt.referer.remove", true);
  38.  
  39. var beefree_listener =
  40. {
  41.     observe : function(aSubject, aTopic, aData)
  42.     {
  43.         if (aTopic == "http-on-modify-request")
  44.         {
  45.             try
  46.             {
  47.                 var httpChannel = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel);
  48.             } catch(e) { return; }
  49.             var msg = "";
  50.             var handler_index = -1;
  51.             try
  52.             {
  53.                 var host = httpChannel.URI.asciiHost;// new String(httpChannel.getRequestHeader("host"))
  54.                 handler_index = beefree_handler_find_from_host(host, false);
  55.                 if(handler_index >= 0)
  56.                 {
  57.                     if(beefree_website_get_info(handler_index, "referer.remove") == true) //Access to websites[]
  58.                     {
  59.                         var useragent = "";
  60.                         for (var handler_index_item in beefree_useragents_list)
  61.                         {
  62.                             if(handler_index_item == handler_index)
  63.                             {
  64.                                 useragent = beefree_useragents_list[handler_index_item];
  65.                                 break;
  66.                             }
  67.                         }
  68.                         if(useragent.length == 0)
  69.                         {
  70.                             useragent = beefree_useragents_list[handler_index] = beefree_useragent_new();
  71.                             msg += (msg.length > 0 ? "\n" : "") + "[BeeFREE] Fake UA for: <" + host + "> is: <" + useragent + ">";
  72.                         }
  73.                         msg += (msg.length > 0 ? "\n" : "") + "[BeeFREE] Faking UA on: <" + host + ">";
  74.                         httpChannel.setRequestHeader("user-agent", useragent, false); 
  75.                     }
  76.                 }
  77.             } catch(e) { }
  78.             try
  79.             {
  80.                 var address = "";
  81.                 var referer = "";
  82.                 try
  83.                 {
  84.                     address = httpChannel.URI.asciiSpec;
  85.                 } catch(e) { }
  86.                 try
  87.                 {
  88.                     referer = new String(httpChannel.getRequestHeader("referer"));
  89.                 } catch(e) { }
  90.                 handler_index = -1;
  91.                 if(!(handler_index >= 0))
  92.                     if(beefree_is_protocol_web(address))
  93.                         handler_index = beefree_handler_find_from_url(address, false);
  94.                 if(!(handler_index >= 0))
  95.                     if(beefree_is_protocol_web(referer))
  96.                         handler_index = beefree_handler_find_from_url(referer, false);
  97.                 if(handler_index >= 0)
  98.                 {
  99.                     if(beefree_website_get_info(handler_index, "useragent.remove") == true) //Access to websites[]
  100.                     {
  101.                         msg += (msg.length > 0 ? "\n" : "") + "[BeeFREE] Removing referrer from: <" + address + ">";
  102.                         httpChannel.setRequestHeader("referer","", false); 
  103.                     }
  104.                 }
  105.                 else
  106.                 {
  107.                     if(beefree_opt_referer_remove && beefree_is_protocol_web(address) && beefree_is_protocol_web(referer))
  108.                     {
  109.                         if(beefree_host_from_address(address) != beefree_host_from_address(referer))
  110.                         {
  111.                             msg += (msg.length > 0 ? "\n" : "") + "[BeeFREE] Removing referrer from: <" + address + ">";
  112.                             httpChannel.setRequestHeader("referer","", false); 
  113.                         }
  114.                     }
  115.                 }
  116.             } catch(e) { }
  117.             if(msg.length > 0)
  118.                 beefree_console_debug(msg);
  119.         }
  120.     },
  121.  
  122.   QueryInterface : function(aIID) {
  123.     if (aIID.equals(Components.interfaces.nsISupports) ||
  124.         aIID.equals(Components.interfaces.nsIObserver))
  125.       return this;
  126.     throw Components.results.NS_NOINTERFACE;
  127.   }
  128. };
  129.  
  130. // get the observer service and register for
  131. var observerService = Components.classes["@mozilla.org/observer-service;1"]
  132.                                 .getService(Components.interfaces.nsIObserverService);
  133. observerService.addObserver(beefree_listener, "http-on-modify-request", false);
  134.  
  135.  
  136.